// 引入express
const express = require('express')
const fs = require('fs')

// 创建应用对象
const app = express()

// 使用内置中间件 => 配置静态资源
// app.use(express.static('public'))
// 使用中间件 => 配置静态资源
// 使用了高阶函数 => 柯里化函数
function myStatic(dir) {
  return (req, res, next) => {
    console.log('myStatic')
    // 得到资源的path
    let path = req.path
    // 如果是根路径, 修正为 /index.html
    if (path==='/') {
      path = '/index.html'
    }
    // 得到资源的绝对路径 
    const filePath = __dirname + '/' + dir + path

    // 读取资源文件
    fs.readFile(filePath, (error, data) => {
      // 如果文件不存在
      if (error) {
        next()
      } else { // 将文件数据返回
        // res.end(data)  // data是buffer对象
        res.send(data.toString())
      }
    })

  }
}
app.use(myStatic('public'))


// 注册路由 (get请求)
app.get('/middleware', (req, res) => {
  res.send('middleware response')
})

// 启动服务, 监听指定端口
app.listen('3000',  () => {
  console.log('服务已启动: http://localhost:3000')
})